package
{
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.net.URLLoader;
	
	import playerio.Connection;
	
	/**
	 * Clase que gestiona la validación de respuesta para preguntas cerradas y preguntas abiertas
	 * @author Grupo FourthWorld
	 * @since  1.0
	*/
	
	public class Respuesta
	{
		public static var perdio :Boolean = false;
		public  var main:Main;
		
		/**
		 * Genera un objeto que contiene la respuesta de un Jugador.
		 *@param text Contiene la respuesta que dio el jugador a la pregunta
		 *@param aleatorio número de pregunta generado aleatoriamente
		 *@param tipo Indica el tipo de la pregunta si esta es cerrada o abierta
		 *@param connection envia respuesta al servidor.  
		 *@param main Variable usada para acceder a metodos estatico que permiten mostrar mensajes por pantalla.
		 *
		*/
		public function Respuesta(text : String, aleatorio : Number, tipo : String, connection:Connection, main:Main)
		{
			perdio = false;
			this.main = main;
			if (tipo == "cerrada") {
				comparaRespuestasCerradas(text, aleatorio, connection);
			}
			else if (tipo == "abierta"){
				comparaRespuestasAbiertas (text, aleatorio, connection);
				
			}
		}
		
		/**
		 * Función que valida la respuesta a una pregunta cerrada
		  *@param text Contiene la respuesta que dio el jugador a la pregunta
		  *@param aleatorio número de pregunta generado aleatoriamente
		  *@param connection envia respuesta al servidor.  		
		*/
		public function comparaRespuestasCerradas ( text : String  ,aleatorio: Number, connection:Connection): void {
			
			var xml:XML;
			var preguntas : Preguntas = new Preguntas();			
			var loader:URLLoader = preguntas.Actions();
			
			loader.addEventListener(Event.COMPLETE, xmlLoaded);
			
			function xmlLoaded(e:Event):void {
				xml = new XML(e.target.data);
				if ( xml.Preguntas.Tipo.cerrada[aleatorio].Correcta == text ) {
					trace ("CORRECTO");
					connection.send("WinPregCerradas");
				}
				else {
					trace ("FALLASTE");
					connection.send("LosePregCerradas");
					perdio = true;
					main.perder();
				} 
				
			}
		}
		
		/**
		 * Función que valida la respuesta a una pregunta abierta
		 *@param text Contiene la respuesta que dio el jugador a la pregunta
		 *@param aleatorio número de pregunta generado aleatoriamente
		 *@param connection envia respuesta al servidor.  		
		 */
		
		public function comparaRespuestasAbiertas ( text : String  ,aleatorio: Number, connection:Connection): void {
			
			trace ("CMPROBANDO RESPUESTA ABIERTA");
			
			var xml:XML;
			var preguntas : Preguntas = new Preguntas();			
			var loader:URLLoader = preguntas.Actions();
			loader.addEventListener(Event.COMPLETE, xmlLoaded);
			
			function xmlLoaded(e:Event):void {
				xml = new XML(e.target.data);
				trace ("-- " + xml.Preguntas.Tipo.abierta[aleatorio].Respuesta );
				if (  xml.Preguntas.Tipo.abierta[aleatorio].Respuesta == text){
					trace ("PERFECTO");
					Main.minuteTimer.stop();
					connection.send("Win");
				} else {
					Main.minuteTimer.stop();
					perdio = true;		
					connection.send("Lose");
					main.perder();
				}
			}
			
		}
	} 
}